TriPlanar and Named LocatorsΒΆ
TriPlanar mapping is a classic setup of texture projection on 3 axes to improve the painting workflow and avoid tedious uv unwrapping. Use the TriPlanar and TriPlanarBump nodes to setup the projection
Add the TriPlanar shader to the surface channel you want to project to, for instance the DiffuseColor of Surface2:

In the X, Y and Z tabs, set the textures to project:

Adjust the project mode with Mode, Flip U and Flip V to match to orientation and direction of the
textures. Then place the projection coordinates and space using

Scale the triplanar axes to shrink or stretch the projected texture (increasing the axis size will stretch the texture, while decreasing the axis size will shrink the projection.) Use the Mode to wrap/wrap to allow the projected texture to wrap around all coordinates.
While it is possible to control the position, orientation and scaling of the TriPlanar numerically as seen above, it is difficult to adjust for a visual feedback. Guerilla provides specific objects, NamedLocators, to help position the TriPlanar bounding box.
NamedLocators are special objects which are not rendered, but whose transform can be queried in the shaders. NamedLocators can be added in the RenderGraph, and will show up in the viewport. Their position, orientation and scale can be adjusted with the regular move, rotate and scale tools:

As seen in the viewport:

The name of the NamedLocator can be used in the Output Space of the TriPlanar. This drives the
projection transform to follow the NamedLocator transform.

The X, Y and Z in the NamedLocator display indicates the 3 projection planes matching the TriPlanar textures.
Use the Parent input of the NamedLocator to parent it to another locator of the scene. In this case, the locator will naturally inherit from its parent transform.
In the case the Parent input represents different locations, the NamedLocator will be instanced several times. Sibling objects (and children thereof) will only see the parent locator only, while objects outside of the hierarchy will see the last instance in the scene graph.

In this example, the NamedLocator is instanced in Group1 and Group2, allowing objects in these groups to properly use their respective instance of the locator, while Cube and Cube1, which are not in the same hierarchy as the NamedLocator instances can only use the last instance, Group2|NamedLocator